package com.sqx.modules.recovery.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @TableName goods_specifications
 */

@Data
public class GoodsSpecifications implements Serializable {
    /**
     *
     */
    @ApiModelProperty("商品规格主键id")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 解析后规格值的列表
     */
    @TableField(exist = false)
    @ApiModelProperty("解析后规格值的列表")
    private List<AttributeValue> attributes;

    /**
     * 物品id
     */
    @ApiModelProperty("物品id")
    private Long recoveryId;

//    /**
//     * 属性名：颜色、内存等
//     */
//    @ApiModelProperty("颜色")
//    private String color;
//
//    /**
//     * 尺寸(容量)
//     */
//    @ApiModelProperty("尺寸(容量)")
//    private String size;
//
//    /**
//     * 重量
//     */
//    @ApiModelProperty("重量")
//    private String weight;
//
//    /**
//     * 网络类型(全网通等)
//     */
//    @ApiModelProperty("网络类型(全网通等)")
//    private String networkType;
//
//    /**
//     * 版本类型(中国大陆等)
//     */
//    @ApiModelProperty("版本类型(中国大陆等)")
//    private String versionType;

    /**
     * 属性相对应的价格
     */
    @ApiModelProperty("属性相对应的价格")
    private BigDecimal price;

    /**
     * 是否删除：0未删除 1已删除
     */
    @ApiModelProperty("是否删除：0未删除 1已删除")
    private Integer deleteFlag;

//    /**
//     * 创建人
//     */
//    @ApiModelProperty("创建人")
//    private Long createBy;
//
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

//    /**
//     * 修改人
//     */
//    @ApiModelProperty("修改人")
//    private Long updateBy;
//
    /**
     * 修改时间
     */
    @ApiModelProperty("修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /**
     * 回收物品规格属性名称
     */
    @ApiModelProperty("回收物品规格属性名称")
    private String attributeName;


//    /**
//     * 回收的父级id
//     */
//    @ApiModelProperty("回收的父级id")
//    private Long parentId;

    /**
     * 是否回收规格：0回收的规格 1商品的规格
     */
    @ApiModelProperty("是否回收规格：0回收的规格 1商品的规格")
    private Integer specStatus;

    /**
     * 存放分割好的回收物品规格属性值
     */
    @ApiModelProperty("存放分割好的回收物品规格属性值")
    @TableField(exist = false)
    private List<String> attributeValueStr;

    /**
     * 回收物品规格的图片
     */
    @ApiModelProperty("回收物品规格的图片")
    private String specImg;


    /**
     * 子级
//     */
//    @TableField(exist = false)
//    public List<GoodsSpecifications> children;


    /**
     * 回收物品规格属性值
     */
    @ApiModelProperty("回收物品规格属性值")
//    @Convert(converter = AttributeValueListTypeHandler.class)
    private String attributeValue;

    /**
     * 前端传的 List<对象>
     */
    @ApiModelProperty("前端传的 List<对象>")
    @TableField(exist = false)
    private List<AttributeValue> attributeValueJson;

    /**
     * 是否多选规格 0否  1是
     */
    @ApiModelProperty("是否多选规格 0否  1是")
    private Integer typeStatus;


//    public void setAttributeValue(List<AttributeValue> attributeValue) {
//        this.attributeValue = attributeValue;
//        try {
//            ObjectMapper objectMapper = new ObjectMapper();
//            this.attributeValueJson = objectMapper.writeValueAsString(attributeValue);
//        } catch (JsonProcessingException e) {
//            throw new RuntimeException("Failed to serialize attributeValue", e);
//        }
//    }
//
//
//    public void setAttributeValueJson(String attributeValueJson) {
//        this.attributeValueJson = attributeValueJson;
//        try {
//            ObjectMapper objectMapper = new ObjectMapper();
//            if (attributeValueJson != null && !attributeValueJson.isEmpty()) {
//                this.attributeValue = objectMapper.readValue(attributeValueJson, objectMapper.getTypeFactory().constructCollectionType(List.class, AttributeValue.class));
//            } else {
//                this.attributeValue = new ArrayList<>();
//            }
//        } catch (IOException e) {
//            throw new RuntimeException("Failed to deserialize attributeValueJson", e);
//        }
//    }



    private static final long serialVersionUID = 1L;

}